package com.yungu.swift.order.model.vo;


import com.yungu.swift.base.model.BaseVo;
import com.yungu.swift.base.model.annotation.AbsoluteImgPath;
import com.yungu.swift.lbs.model.DriverLocation;

import java.util.Date;
import java.util.List;

/**
 * 行程分享-实体类
 *
 * @author 兰平雄
 * @date 2018/12/01
 * @version: 1.0
 */
public class TripSharingInfoVo extends BaseVo {

    /**
     * 订单主状态1：订单初识化,2订单进行中3：订单结束（待支付）4：支付完成5.取消
     */
    private Integer mainStatus;
    /**
     * 100：乘客发单、等待应答；\r\n200：司机接单、行程确定；\r\n210：司机出发、去接乘客；
     * \r\n220：司机到达、等待乘客；\r\n300：乘客上车、行程开始；\r\n400：司机送达目的地；
     * \r\n500：司机确认费用，等待乘客支付；\r\n600：付款完成、行程结束；\r\n610：乘客完成对车主评价；
     * \r\n900：乘客取消（新行程）；\r\n901：乘客取消（行程确定后、司机未到达）；
     * \r\n902：乘客取消（行程确定后、司机到达）；\r\n910：［新行程］司机取消；\r\n980：无人抢单，订单超时；
     * \r\n990：客服关闭订单
     */
    private Integer subStatus;

    /**
     * 乘客当前状态
     * 0-司机已接单，等待接驾和待上车，
     * 1-乘客上车，行程中，
     * 2-到达目的地，行程结束，
     * 3-该行程已于24小时前结束,
     * 4-该订单已取消,
     * 5-该订单已关闭，
     * 6-其他状态
     */
    private Integer passengerStatus;
    /**
     * 出发详情地址
     */
    private String originDetailAddress;
    /**
     * 出发地经度
     */
    private Double originLng;
    /**
     * 出发地纬度
     */
    private Double originLat;
    /**
     * 目的地详细地址
     */
    private String destDetailAddress;
    /**
     * 目的地经度
     */
    private Double destLng;
    /**
     * 目的地纬度
     */
    private Double destLat;
    /**
     * 乘客上车时间
     */
    private Date pasArrTime;
    /**
     * 到达目的地时间
     */
    private Date arriveTime;
    /**
     * 司机头像地址
     */
    @AbsoluteImgPath
    private String face;
    /**
     * 司机姓名
     */
    private String name;
    /**
     * 司机评价平均分数
     */
    private Double score;
    /**
     * 司机成功订单数
     */
    private Integer orderCount;
    /**
     * 车牌号
     */
    private String plateNum;
    /**
     * 车外观颜色
     */
    private String carColor;
    /**
     * 车辆型号
     */
    private String model;
    /**
     * 车辆厂牌
     */
    private String brand;
    /**
     * 司机当前位置
     */
    private DriverLocation driverLocation;
    /**
     * 司机服务过程全部的点-乘客上车到乘车下车
     */
    private List<DriverLocation> driverServiceProcessPointList;
    /**
     * 距离终点
     */
    private double remainingDistance;
    /**
     * 预计行驶时间
     */
    private int estimatedDrivingTime;


    public Integer getMainStatus() {
        return mainStatus;
    }

    public void setMainStatus(Integer mainStatus) {
        this.mainStatus = mainStatus;
    }

    public Integer getSubStatus() {
        return subStatus;
    }

    public void setSubStatus(Integer subStatus) {
        this.subStatus = subStatus;
    }

    public String getOriginDetailAddress() {
        return originDetailAddress;
    }

    public void setOriginDetailAddress(String originDetailAddress) {
        this.originDetailAddress = originDetailAddress;
    }

    public Double getOriginLng() {
        return originLng;
    }

    public void setOriginLng(Double originLng) {
        this.originLng = originLng;
    }

    public Double getOriginLat() {
        return originLat;
    }

    public void setOriginLat(Double originLat) {
        this.originLat = originLat;
    }

    public String getDestDetailAddress() {
        return destDetailAddress;
    }

    public void setDestDetailAddress(String destDetailAddress) {
        this.destDetailAddress = destDetailAddress;
    }

    public Double getDestLng() {
        return destLng;
    }

    public void setDestLng(Double destLng) {
        this.destLng = destLng;
    }

    public Double getDestLat() {
        return destLat;
    }

    public void setDestLat(Double destLat) {
        this.destLat = destLat;
    }

    public Date getPasArrTime() {
        return pasArrTime;
    }

    public void setPasArrTime(Date pasArrTime) {
        this.pasArrTime = pasArrTime;
    }

    public Date getArriveTime() {
        return arriveTime;
    }

    public void setArriveTime(Date arriveTime) {
        this.arriveTime = arriveTime;
    }

    public String getFace() {
        return face;
    }

    public void setFace(String face) {
        this.face = face;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getScore() {
        return score;
    }

    public void setScore(Double score) {
        this.score = score;
    }

    public Integer getOrderCount() {
        return orderCount;
    }

    public void setOrderCount(Integer orderCount) {
        this.orderCount = orderCount;
    }

    public String getPlateNum() {
        return plateNum;
    }

    public void setPlateNum(String plateNum) {
        this.plateNum = plateNum;
    }

    public String getCarColor() {
        return carColor;
    }

    public void setCarColor(String carColor) {
        this.carColor = carColor;
    }

    public List<DriverLocation> getDriverServiceProcessPointList() {
        return driverServiceProcessPointList;
    }

    public void setDriverServiceProcessPointList(List<DriverLocation> driverServiceProcessPointList) {
        this.driverServiceProcessPointList = driverServiceProcessPointList;
    }

    public Integer getPassengerStatus() {
        return passengerStatus;
    }

    public void setPassengerStatus(Integer passengerStatus) {
        this.passengerStatus = passengerStatus;
    }

    public DriverLocation getDriverLocation() {
        return driverLocation;
    }

    public void setDriverLocation(DriverLocation driverLocation) {
        this.driverLocation = driverLocation;
    }

    public double getRemainingDistance() {
        return remainingDistance;
    }

    public void setRemainingDistance(double remainingDistance) {
        this.remainingDistance = remainingDistance;
    }

    public int getEstimatedDrivingTime() {
        return estimatedDrivingTime;
    }

    public void setEstimatedDrivingTime(int estimatedDrivingTime) {
        this.estimatedDrivingTime = estimatedDrivingTime;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    @Override
    public String toString() {
        return "TripSharingInfoVo{" +
                "mainStatus=" + mainStatus +
                ", subStatus=" + subStatus +
                ", passengerStatus=" + passengerStatus +
                ", originDetailAddress='" + originDetailAddress + '\'' +
                ", originLng=" + originLng +
                ", originLat=" + originLat +
                ", destDetailAddress='" + destDetailAddress + '\'' +
                ", destLng=" + destLng +
                ", destLat=" + destLat +
                ", pasArrTime=" + pasArrTime +
                ", arriveTime=" + arriveTime +
                ", face='" + face + '\'' +
                ", name='" + name + '\'' +
                ", score=" + score +
                ", orderCount=" + orderCount +
                ", plateNum='" + plateNum + '\'' +
                ", carColor='" + carColor + '\'' +
                ", model='" + model + '\'' +
                ", brand='" + brand + '\'' +
                ", driverLocation=" + driverLocation +
                ", driverServiceProcessPointList=" + driverServiceProcessPointList +
                ", remainingDistance=" + remainingDistance +
                ", estimatedDrivingTime=" + estimatedDrivingTime +
                '}';
    }
}
